package com.ylsk.mobilecheck.service;

import com.ylsk.check.domain.EntryReport;
import com.ylsk.check.domain.ExpresswaySection;
import com.ylsk.check.domain.WithdrawalReport;
import com.ylsk.check.domain.dto.*;
import com.ylsk.check.domain.so.*;
import com.ylsk.check.domain.vo.*;

import java.util.List;


/**
 * 施工端Service接口
 *
 * @author ysy
 * @date 2023-12-03
 */
public interface ConstructionMobileService
{
    /**
     * 保存项目报备
     * @param reportInfoDTO
     * @return
     */
    public int saveReportInfo(ReportInfoDTO reportInfoDTO);


    /**
     * 项目报备详情
     * @param reportInfoId
     * @return
     */
    public ReportInfoVO getReportInfo(Long reportInfoId);


    /**
     * 修改项目报备
     * @param reportInfoDTO
     * @return
     */
    public int updateReportInfo(ReportInfoDTO reportInfoDTO);


    /**
     * 删除项目报备
     * @param reportInfoId
     * @return
     */
    public int removeReportInfo(Long reportInfoId);

    /**
     * 项目报备列表
     * @param reportInfoSO
     * @return
     */
    public List<ReportInfoVO> listReportInfo(ReportInfoSO reportInfoSO);


    /**
     * 项目报备不分页列表
     * @param reportInfoSO
     * @return
     */
    public List<ReportInfoVO> selectListReportInfo(ReportInfoSO reportInfoSO);

    /**
     * 项目报备审批记录列表
     * @param reportInfoId
     * @return
     */
    public List<ReportApprLogVO> listReportInfoApprRecord(Long reportInfoId);
    /**
     * 获取高速路段列表
     * @param expresswaySection
     * @return
     */
    public List<ExpresswaySectionVO> getExpresswaySectionList(ExpresswaySection expresswaySection);

    /**
     * 进场上报列表
     * @param entryReportSO
     * @return
     */
    public List<EntryReportVO>  listEntryReport(EntryReportSO entryReportSO);

    /**
     * 保存进场上报
     * @param entryReportDTO
     * @return
     */

    public int saveEntryReport(EntryReportDTO entryReportDTO);


    /**
     * 进场上报详情
     * @param entryReportId
     * @return
     */
    public EntryReportVO getEntryReport(Long entryReportId);

    /**
     * 撤场上报列表
     * @param withdrawalReportSO
     * @return
     */
    public List<WithdrawalReportVO>  listWithdrawalReport(WithdrawalReportSO withdrawalReportSO);

    /**
     * 保存撤场上报
     * @param withdrawalReportDTO
     * @return
     */

    public int saveWithdrawalReport(WithdrawalReportDTO withdrawalReportDTO);


    /**
     * 撤场上报详情
     * @param withdrawalReportId
     * @return
     */
    public WithdrawalReportVO getWithdrawalReport(Long withdrawalReportId);


    /**
     * 占道上报列表
     * @param jeevesReportSO
     * @return
     */
    public List<JeevesReportVO>  listJeevesReport(JeevesReportSO jeevesReportSO);

    /**
     * 保存占道上报
     * @param jeevesReportDTO
     * @return
     */

    public int saveJeevesReport(JeevesReportDTO jeevesReportDTO);


    /**
     * 占道上报详情
     * @param jeevesReportId
     * @return
     */
    public JeevesReportVO getJeevesReport(Long jeevesReportId);


    /**
     * 变动上报列表
     * @param changeReportSO
     * @return
     */
    public List<ChangeReportVO>  listChangeReport(ChangeReportSO changeReportSO);

    /**
     * 保存变动上报
     * @param changeReportDTO
     * @return
     */

    public int saveChangeReport(ChangeReportDTO changeReportDTO);


    /**
     * 变动上报详情
     * @param changeReportId
     * @return
     */
    public ChangeReportVO getChangeReport(Long changeReportId);

    /**
     * 施工检查问题分页列表
     * @param checkProblemSO
     * @return
     */
    public List<CheckProblemVO> listCheckProblem(CheckProblemSO checkProblemSO);

    /**
     * 施工检查问题整改
     * @param rectificationReportDTO
     * @return
     */
    public int updateCheckProblem(RectificationReportDTO rectificationReportDTO);


    /**
     * 施工检查问题详情
     * @param checkProblemId
     * @return
     */
    public CheckProblemVO getCheckProblem(Long checkProblemId);


    /**
     * 施工完成列表
     * @param reportInfoSO
     * @return
     */
    public List<ReportInfoVO> listProjectEnd(ReportInfoSO reportInfoSO);

    /**
     * 查询占道报备未撤场的数据
     */
    public List<JeevesReportVO> selectJeevesNotWithdrawnList(JeevesReportSO jeevesReportSO);
}
